package com.tools.genxsd.entity.type;

import com.tools.genxsd.entity.XsdBaseType;
import com.tools.genxsd.entity.XsdDocument;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

import static com.tools.genxsd.constant.SysConstant.PREFIX;

/**
 * 新增简单元素
 * @author: zhoubin
 * @date: 2022/11/9
 */
@Getter
@Setter
public class XsdStringType extends XsdBaseType {

    /**
     * 节点名
     */
    private String name;

    /**
     * 基本类型
     */
    private String baseType;

    /**
     * 最大长度
     */
    private String maxLength;

    /**
     * 最小长度
     */
    private String minLength;

    /**
     * 正则表达式
     */
    private String pattern;

    /**
     * 枚举列表
     */
    private List<String> enumList;

    public String getBaseType() {
        if (baseType.contains(PREFIX)) {
            return baseType;
        }
        return PREFIX + baseType;
    }

    public XsdStringType(String name, String baseType) {
        this.setName(name);
        this.baseType = baseType;
    }

    public XsdStringType(String name, String baseType, String pattern) {
        this.setName(name);
        this.baseType = baseType;
        this.pattern = pattern;
    }

    public XsdStringType(String name, String baseType, String minLength, String maxLength) {
        this.setName(name);
        this.baseType = baseType;
        this.minLength = minLength;
        this.maxLength = maxLength;
    }

    @Override
    public void addToDocument(XsdDocument document) {
        document.getGenerate().addStringType(this);
    }
}
